{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Special case: gaseous species\n", "In this special case tutorial we will discuss how to handle gaseous compounds both in the in- and outlet of the reactor, the most common molecules of this type is CO2 and O2. We can setup the full mass balance for the gaseous species as follows:\n", "\n", "$$\n", "\\frac{dM_{species}}{dt}=In_{gas}+In_{liquid}-Out_{gas}+Metabolism-Sampled\n", "$$\n", "where $M_{species}$ is the total amount of species in the reactor in both gas and aqueous phase. The term metabolism is the net value and covers both production (positive) and consumption (negative). If we integrate the mass balance we get the following:\n", "\n", "$$\n", "M_{species}(t)=\\int_0^t In_{gas}+\\int_0^t In_{liquid}-\\int_0^t Out_{gas}+\\int_0^t Metabolism-\\int_0^t Sampled\n", "$$\n", "\n", "This shows that the concentration of the species at a give time is result of the integrated mass balance, i.e. the accumulated \"events\", e.g. input of medium, gas, sampling etc. We are interested in how the cells contribute to the changes in mass of the species, thus we will isolate the metabolism term.\n", "\n", "$$\n", "\\int_0^t Metabolism=M_{species}(t)-\\int_0^t In_{gas}-\\int_0^t In_{liquid}+\\int_0^t Out_{gas}+\\int_0^t Sampled\n", "$$\n", "\n", "The mass balance above works in mass units, however, the pseudo batch transformation can only work with concentrations. Therefore, we treat the integrated metabolism as entirely solubilized and assign it a “hypothetical concentration”, which we then perform the pseudobatch correction on.\n", "\n", "The pseudobatch package presents two functions which aids tranformation of gaseous species. The first calculates the hypothetical concentration from metabolism time series. The second function can calculate the metabolism term in the mass balance from the data.\n", "\n", "In this tutorial we will go through three examples\n", "\n", "1. Highly insoluble produced compound, exemplified by $CO_2$\n", "2. Consumed gaseous compound, exemplified by $O_2$\n", "3. Partially insoluble compound, exemplified by a generic product\n", "\n", "Now, we are ready to setup the programming environment and load the data.\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/s143838/.virtualenvs/pseudobatch-dev/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", " from .autonotebook import tqdm as notebook_tqdm\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "{'stan_version_major': '2', 'stan_version_minor': '29', 'stan_version_patch': '2', 'STAN_THREADS': 'false', 'STAN_MPI': 'false', 'STAN_OPENCL': 'false', 'STAN_NO_RANGE_CHECKS': 'false', 'STAN_CPP_OPTIMS': 'false'}\n" ] } ], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import numpy as np\n", "\n", "from pseudobatch import pseudobatch_transform_pandas, hypothetical_concentration, metabolised_amount\n", "from pseudobatch.datasets import load_volatile_compounds_fedbatch" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "fedbatch_df = load_volatile_compounds_fedbatch()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Transforming a highly insoluble produced compound, $CO_2$\n", "When a compound is highly insoluble one can make a simplifying assumption, i.e. that all the product which is product exists the reactor through the off gas. Furthermore, we assume that there is no $CO_2$ present in the inlet gas. If we look at the mass balance this assumption has the following effect.\n", "\n", "$$\n", "\\int_0^t Metabolism=\\sout{M_{species}(t)}-\\sout{\\int_0^t In_{gas}}-\\sout{\\int_0^t In_{liquid}}+\\int_0^t Out_{gas}+\\sout{\\int_0^t Sampled}\n", "$$\n", "Thus, under these two assumptions all $\\int_0^t Metabolism=\\int_0^t Out_{gas}$.\n", "\n", "\n", "These two assumptions are true for the simulated test dataset. The data contain simulated the accumulated $CO_2$ production measurements in mass units in the column `m_CO2_gas`. We can start by looking at the simulated $CO_2$ data." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[],\n", " []], dtype=object)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGwCAYAAABVdURTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABlvElEQVR4nO3de3yO9ePH8de9I7OT0zZjDjnOWQ4zFN/s1xSiKEpfI9+UEE2FDqhoOij5FlK+dCCl0leSvhIqLYc5n4bChG2EzXHHz++Pu93cNmzadm+39/PxuB/cn+tzXdfnujb3/fa5PtfnshhjDCIiIiJOwsXRDRAREREpTAo3IiIi4lQUbkRERMSpKNyIiIiIU1G4EREREaeicCMiIiJOReFGREREnIqboxvgCNnZ2Rw5cgQfHx8sFoujmyMiIiL5YIzh9OnTBAcH4+Jy5f6ZGzLcHDlyhJCQEEc3Q0RERK7DoUOHqFat2hWX35DhxsfHB7CeHF9fXwe3RkRERPIjNTWVkJAQ2/f4ldyQ4SbnUpSvr6/CjYiISClzrSElGlAsIiIiTkXhRkRERJyKwo2IiIg4lRtyzI2IFI6srCwyMjIc3QwRcRLu7u64urr+7e0o3IhIgRljSExM5NSpU45uiog4GX9/f4KCgv7WPHQKNyJSYDnBJiAgAC8vL02GKSJ/mzGGc+fOkZycDECVKlWue1sKNyJSIFlZWbZgU7FiRUc3R0ScSNmyZQFITk4mICDgui9RaUCxiBRIzhgbLy8vB7dERJxRzmfL3xnPp3AjItdFl6JEpCgUxmeLwo2IiIg4FYUbERERcSoKNyIiIpeZMGECzZs3d3QzisWqVauwWCxYLBZ69uxZpPuaO3eubV8jR44ssv0o3IjIDSc2NhZXV1e6du3q6KbIdahZsyZTp04ttO1ZLBa++uoru7Inn3ySFStWFNo+rmbTpk3ce++9BAYGUqZMGerWrcvDDz/Mnj177Op98MEHtG7dGi8vL3x8fOjYsSNLliyxq7Nq1Sp69OhBlSpVKFeuHM2bN2fevHn5akd8fDxz5869rmP4xz/+wfvvv8+BAwewWCxs3rw5z3p9+vTh6NGjhIeHX9d+8kvhRkRuOLNnz2b48OH8+OOPHDlyxNHNkSKQlZVFdnb2da/v7e1dLFMdLFmyhLZt25KWlsa8efPYtWsXH3/8MX5+fjz//PO2ek8++SSPPPIIffr0YevWraxbt44OHTrQo0cP3n77bVu9X375haZNm/LFF1+wdetWBg4cSP/+/XOFoLwEBATg7+9f4GM4ceIEa9asoXv37tesW7ZsWYKCgvDw8CjwfgrE3IBSUlIMYFJSUhzdFJFS5/z582bnzp3m/PnztrLs7GxzNi3DIa/s7OwCtf/06dPG29vb7N692/Tp08dMmjQpV52YmBgTEBBgvL29zUMPPWRGjx5tmjVrZlvesWNHM2LECLt1evToYaKiomzvL1y4YEaNGmWCg4ONl5eXadOmjVm5cqXdOp9//rlp2LCh8fDwMDVq1DCvv/663XLALFq0yK7Mz8/PzJkzxxhjTFpamhk6dKgJCgoynp6epnr16ubll1++6vHPnj3bts+goCAzdOhQ27KDBw+au+66y5QrV874+PiYe++91yQmJtqWjx8/3jRr1sx8+OGHpkaNGsbX19f06dPHpKam2upkZWWZV155xdSuXdt4eHiYkJAQM3HiRNvyhIQEc++99xo/Pz9Tvnx5c9ddd5n9+/fblkdFRZkePXqY1157zQQFBZkKFSqYxx57zKSnp9vOPWD3MsaYOXPmGD8/P/Pf//7XhIaGGldXV7N//36zbt06ExERYSpWrGh8fX3NrbfeauLi4mz7q1Gjht22atSoYXeslx7XCy+8YKpWrWo8PDxMs2bNzLfffmtbvn//fgOYL774wnTq1MmULVvWNG3a1Pzyyy9X/FmcPXvWVKpUyfTs2TPP5SdPnjTGGBMbG2sAM23atFx1oqOjjbu7u0lISLjifu68804zcODAKy5fuXKlAWz7y5GammoeeOAB4+XlZYKCgswbb7yR5+/+hx9+aMLCwowxF8/Dpk2brrg/Y/L+N5Qjr8+YHPn9/tYkfiLyt53PyKLhuO8csu+dL0bi5ZH/j7LPPvuMBg0aUL9+fR588EFGjhzJ2LFjbbeffvbZZ0yYMIF33nmHDh068NFHHzFt2jRuuummArVr2LBh7Ny5kwULFhAcHMyiRYvo0qUL27Zto27dusTFxXHfffcxYcIE+vTpwy+//MJjjz1GxYoVGTBgQL72MW3aNBYvXsxnn31G9erVOXToEIcOHbpi/RkzZhAdHc3kyZO54447SElJYc2aNQBkZ2fTo0cPvL29Wb16NZmZmQwdOpQ+ffqwatUq2zZ+++03vvrqK5YsWcLJkye57777mDx5MpMmTQJg7NixvPfee7z55pt06NCBo0ePsnv3bsA6b0lkZCTh4eH89NNPuLm5MXHiRLp06cLWrVtt/5tfuXIlVapUYeXKlezbt48+ffrQvHlzHn74Yb788kuaNWvG4MGDefjhh+2O79y5c7zyyiu8//77VKxYkYCAAH7//XeioqL497//jTGGKVOmcOedd7J37158fHxYv349AQEBzJkzhy5dulxx0ri33nqLKVOm8O6779KiRQv+85//cNddd7Fjxw7q1q1rq/fss8/y+uuvU7duXZ599lnuv/9+9u3bh5tb7t/R7777juPHj/P000/nuc+cXpRPPvkEb29vHnnkkVx1Ro0axRtvvMEXX3xxxTEsKSkphIaG5rnsaqKjo1mzZg2LFy8mMDCQcePGsXHjxlxjkRYvXkyPHj0KvP2iVCyXpd555x1q1qxJmTJlCAsLY926dVetv3DhQho0aECZMmVo0qQJS5cuvWLdRx99FIvFUqjXX0XEec2ePZsHH3wQgC5dupCSksLq1atty6dOncqgQYMYNGgQ9evXZ+LEiTRs2LBA+0hISGDOnDksXLiQW265hdq1a/Pkk0/SoUMH5syZA8Abb7xB586def7556lXrx4DBgxg2LBhvPbaawXaT926denQoQM1atSgQ4cO3H///VesP3HiREaNGsWIESOoV68erVu3tn0hrlixgm3btjF//nxatmxJWFgYH374IatXr2b9+vW2bWRnZzN37lwaN27MLbfcwj//+U/b2JTTp0/z1ltv8eqrrxIVFUXt2rXp0KED//rXvwD49NNPyc7O5v3336dJkyaEhoYyZ84cEhIS7AJU+fLlefvtt2nQoAHdunWja9eutn1UqFABV1dXfHx8CAoKIigoyLZeRkYG06dPp127dtSvXx8vLy9uu+02HnzwQRo0aEBoaCizZs3i3Llztp955cqVgYvPM8p5f7nXX3+d0aNH07dvX+rXr88rr7xC8+bNc333PPnkk3Tt2pV69erxwgsvcPDgQfbt25fnNvfu3QtAgwYNrvgzA9izZw+1a9fO81JOcHAwvr6+ucbn5Pjss89Yv349AwcOvOo+Lnf69Gk++OADXn/9dTp37kzjxo2ZM2cOWVlZdvXS0tJYtmwZd911V4G2X9SKvOfm008/JTo6mpkzZxIWFsbUqVOJjIwkPj6egICAXPV/+eUX7r//fmJiYujWrRvz58+nZ8+ebNy4kcaNG9vVXbRoEb/++ivBwcFFfRgichVl3V3Z+WKkw/adX/Hx8axbt45FixYB4ObmRp8+fZg9ezadOnUCYNeuXTz66KN264WHh7Ny5cp872fbtm1kZWVRr149u/K0tDTbOI5du3bl+t9u+/btmTp1KllZWfmadn7AgAH83//9H/Xr16dLly5069aN22+/Pc+6ycnJHDlyhM6dO+e5fNeuXYSEhBASEmIra9iwIf7+/uzatYvWrVsD1sG8Pj4+tjpVqlSxPQto165dpKWlXXEfW7ZsYd++fXbrA1y4cIHffvvN9r5Ro0Z2x1+lShW2bdt2tVMBgIeHB02bNrUrS0pK4rnnnmPVqlUkJyeTlZXFuXPnSEhIuOb2cqSmpnLkyBHat29vV96+fXu2bNliV3bp/nOejZScnJxngDHG5LsNBambY+XKlQwcOJD33nuPRo0aFWjd33//nYyMDNq0aWMr8/Pzo379+nb1fvjhBwICAgq8/aJW5OHmjTfe4OGHH7alxpkzZ/LNN9/wn//8hzFjxuSq/9Zbb9GlSxeeeuopAF566SWWL1/O22+/zcyZM231Dh8+zPDhw/nuu+90x4OIg1kslgJdGnKU2bNnk5mZafcfImMMnp6evP322/j5+eVrOy4uLrm+bC6dKv7MmTO4uroSFxeXK6R4e3vnu70Wi+Wq+7n55pvZv38/3377Ld9//z333XcfERERfP7557m2lfPMnr/L3d09VxtzBu5eax9nzpyhZcuWed69c2mPydX2cTVly5bNNbttVFQUf/75J2+99RY1atTA09OT8PBw0tPTr7m963Fp23PacqW254Tf3bt3X/XuoXr16vHzzz+Tnp6eq/fmyJEjpKam5grSq1evpnv37rz55pv079//uo4lPxYvXlziem2giC9LpaenExcXR0RExMUdurgQERFBbGxsnuvExsba1QeIjIy0q5+dnc0///lPnnrqqXylxbS0NFJTU+1eInJjyczM5MMPP2TKlCls3rzZ9tqyZQvBwcF88sknAISGhrJ27Vq7dX/99Ve795UrV+bo0aO291lZWWzfvt32vkWLFmRlZZGcnEydOnXsXjmXUUJDQ23jXXKsWbOGevXq2QLR5fvZu3cv586ds1vH19eXPn368N577/Hpp5/yxRdfcOLEiVzH7+PjQ82aNa94e3NoaGiuMTs7d+7k1KlT+b4sV7duXcqWLXvFfdx8883s3buXgICAXOclv8ESrD00l18euZI1a9bw+OOPc+edd9KoUSM8PT05fvy4XR13d/erbs/X15fg4OA8f14FvWR5qdtvv51KlSrx6quv5rn81KlTAPTt25czZ87w7rvv5qrz+uuv4+7uTq9evWxlq1atomvXrrzyyisMHjz4utp200034e7ubndJMiUlxe7ylzGGr7/+usSNt4Ei7rk5fvw4WVlZBAYG2pUHBgbaBphdLjExMc/6iYmJtvevvPIKbm5uPP744/lqR0xMDC+88EIBWy8iziRnAOygQYNyfZH26tWL2bNn8+ijjzJixAgGDBhAq1ataN++PfPmzWPHjh12A4pvu+02oqOj+eabb6hduzZvvPGG7YsIrP/T7tevH/3792fKlCm0aNGCY8eOsWLFCpo2bUrXrl0ZNWoUrVu35qWXXqJPnz7Exsby9ttvM336dLv9vP3224SHh5OVlcXo0aPtegbeeOMNqlSpQosWLXBxcWHhwoUEBQVd8XbeCRMm8OijjxIQEMAdd9zB6dOnWbNmDcOHDyciIoImTZrQr18/pk6dSmZmJo899hgdO3akVatW+TrHZcqUYfTo0Tz99NN4eHjQvn17jh07xo4dOxg0aBD9+vXjtddeo0ePHrz44otUq1aNgwcP8uWXX/L0009TrVq1fO2nZs2a/Pjjj/Tt2xdPT08qVap0xbp169blo48+olWrVqSmpvLUU0/l6mHKCX3t27fH09OT8uXL59rOU089xfjx46lduzbNmzdnzpw5bN68Od9zyOSlXLlyvP/++9x7773cddddPP7449SpU4fjx4/z2WefkZCQwIIFCwgPD2fEiBE89dRTpKen07NnTzIyMvj444956623mDp1qu1y4sqVK+nWrRsjRoygV69etu9ODw8PKlSokO+2+fj4EBUVxVNPPUWFChUICAhg/PjxuLi42Hqk4uLiOHfuHB06dMi1fnx8fK6yRo0a5eqVKzJXvZfqbzp8+LABct0K99RTT5k2bdrkuY67u7uZP3++Xdk777xjAgICjDHGbNiwwQQGBprDhw/blteoUcO8+eabV2zHhQsXTEpKiu116NAh3Qoucp2udptmSdatWzdz55135rls7dq1BjBbtmwxxhgzadIkU6lSJePt7W2ioqLM008/bXdbcHp6uhkyZIipUKGCCQgIMDExMbluBU9PTzfjxo0zNWvWNO7u7qZKlSrm7rvvNlu3brXVybkV3N3d3VSvXt289tprdu06fPiwuf322025cuVM3bp1zdKlS+1uBZ81a5Zp3ry5KVeunPH19TWdO3c2GzduvOp5mDlzpqlfv76tTcOHD7cty++t4Jd68803bbdPG2O9ZXrixImmRo0atuO69Pb0o0ePmv79+5tKlSoZT09Pc9NNN5mHH37Y9nmccyv4pUaMGGE6duxoex8bG2uaNm1qPD09c90KfrmNGzeaVq1amTJlypi6deuahQsX5vrOWLx4salTp45xc3O76q3gEyZMMFWrVjXu7u5XvBX80lugT548aYBcUwBcbv369eaee+4xlStXNp6enqZOnTpm8ODBZu/evXb1Zs+ebVq2bGnKlCljypUrZ2655RazePFiuzpRUVG5bpUH7M7f5QpyK3ibNm3MmDFjjDHGPPfcc6Zfv3526+Sch7xehw4dstUr6lvBizTcpKWlGVdX11zzNPTv39/cddddea4TEhKSK6iMGzfONG3a1Bhj/YdksViMq6ur7QUYFxcXu39gV6N5bkSuX2kNN39HXl/qIs7iSuHmcmfOnDF+fn7m/fffN8YY06RJE/Ppp59e1z6LOtwU6ZgbDw8PWrZsaXf9NTs7mxUrVlxx8FR4eHiu67XLly+31f/nP//J1q1b7a6ZBwcH89RTT/Hdd46ZZ0NERKS0q1atmt1UAps2beKTTz7ht99+Y+PGjfTr1w+AHj16kJ6eTq9evbjjjjsKtI958+bh7e3NTz/9VKhtv1yR394QHR1NVFQUrVq1ok2bNkydOpWzZ8/a7p7q378/VatWJSYmBoARI0bQsWNHpkyZQteuXVmwYAEbNmxg1qxZAFSsWDHXlNju7u4EBQXlukVNREREri4sLMw2587ld/O9/vrrxMfH2zorfvrpJ9sYp/Hjxxd4X3fddRdhYWEA1/Woh/wq8nDTp08fjh07xrhx40hMTKR58+YsW7bMNmg4ISEBF5eLHUjt2rVj/vz5PPfcczzzzDPUrVuXr776KtccNyIixWXChAlMmDDB0c0QKRJly5alTp06ucpbtGhBXFxcoe7Lx8cn1zxHRcFizHXMDFTKpaam4ufnR0pKCr6+vo5ujkipcuHCBfbv30/NmjULbe4UEZEc58+f58CBA9SqVYsyZcrYLcvv97eeCi4iBZJzK+fl862IiBSGnM+Wv3PbeMmfUlREShRXV1f8/f1tU+57eXnlmhVWRKSgjDGcO3eO5ORk/P398/UIkitRuBGRAsuZZTcn4IiIFJach5j+HQo3IlJgFouFKlWqEBAQYPesIxGRv8Pd3f1v9djkULgRkevm6upaKB9EIiKFSQOKRURExKko3IiIiIhTUbgRERERp6JwIyIiIk5F4UZEREScisKNiIiIOBWFGxEREXEqCjciIiLiVBRuRERExKko3IiIiIhTUbgRERERp6JwIyIiIk5F4UZEREScisKNiIiIOBWFGxEREXEqxRJu3nnnHWrWrEmZMmUICwtj3bp1V62/cOFCGjRoQJkyZWjSpAlLly61LcvIyGD06NE0adKEcuXKERwcTP/+/Tly5EhRH4aIiIiUAkUebj799FOio6MZP348GzdupFmzZkRGRpKcnJxn/V9++YX777+fQYMGsWnTJnr27EnPnj3Zvn07AOfOnWPjxo08//zzbNy4kS+//JL4+Hjuuuuuoj4UERERKQUsxhhTlDsICwujdevWvP322wBkZ2cTEhLC8OHDGTNmTK76ffr04ezZsyxZssRW1rZtW5o3b87MmTPz3Mf69etp06YNBw8epHr16tdsU2pqKn5+fqSkpODr63udRyYiIiLFKb/f30Xac5Oenk5cXBwREREXd+jiQkREBLGxsXmuExsba1cfIDIy8or1AVJSUrBYLPj7++e5PC0tjdTUVLuXiIiIOKciDTfHjx8nKyuLwMBAu/LAwEASExPzXCcxMbFA9S9cuMDo0aO5//77r5jiYmJi8PPzs71CQkKu42hERESkNCjVd0tlZGRw3333YYxhxowZV6w3duxYUlJSbK9Dhw4VYytFRESkOLkV5cYrVaqEq6srSUlJduVJSUkEBQXluU5QUFC+6ucEm4MHD/LDDz9c9dqbp6cnnp6e13kUIiIiUpoUac+Nh4cHLVu2ZMWKFbay7OxsVqxYQXh4eJ7rhIeH29UHWL58uV39nGCzd+9evv/+eypWrFg0ByAiIiKlTpH23ABER0cTFRVFq1ataNOmDVOnTuXs2bMMHDgQgP79+1O1alViYmIAGDFiBB07dmTKlCl07dqVBQsWsGHD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dAuvzdyAUlJSDGBSUlJyLTt//rzZuXOnOX/+vLUgO9uYtDOOeWVnF+i4Tp8+bby9vc3u3btNnz59zKRJk3LVWbx4sWnVqpXx9PQ0FStWND179rQtu3Dhgnn66adNtWrVjIeHh6ldu7Z5//33jTHGzJkzx/j5+dlta9GiRebSX6Hx48ebZs2amdmzZ5uQkBBTrlw5M2TIEJOZmWleeeUVExgYaCpXrmwmTpxYoONau3atAczUqVPzXH7y5EljjDGTJ082FovFbN682W55VlaWadWqlWnYsKHJvsI5zczMND4+PuaDDz64Yjuu9/hOnjxpBg0aZCpVqmR8fHzMP/7xD7s27tu3z9x1110mICDAlCtXzrRq1cosX77cbhvvvPOOqVOnjvH09DQBAQGmV69etmU1atQwb775pl39Zs2amfHjx9veA2b69Omme/fuxsvLy7bsq6++Mi1atDCenp6mVq1aZsKECSYjI8O23p49e8wtt9xiPD09TWhoqPnf//5nALNo0aIrnqeOHTuaESNG2LVv0qRJZuDAgcbb29uEhISYd99994rrG2NMamqqeeCBB4yXl5cJCgoyb7zxRq7tfvjhh6Zly5bG29vbBAYGmvvvv98kJSXZlp84ccI88MADplKlSqZMmTKmTp065j//+U++253jv//9r+3cd+rUycydO9cAtt+7HFFRUaZHjx5X3H6uzxaRkuj31ca828mY8b7W12v1jNk035isLEe3zBhz9e/vS2lA8bVknIOXgx2z72eOgEe5fFf/7LPPaNCgAfXr1+fBBx9k5MiRjB071jYJ4TfffMPdd9/Ns88+y4cffkh6ejpLly61rd+/f39iY2OZNm0azZo1Y//+/Rw/frxATf7tt9/49ttvWbZsGb/99hu9e/fm999/p169eqxevZpffvmFhx56iIiICMLCwvK1zXnz5uHt7c1jjz2W53J/f38A5s+fz//93//RrFkzu+UuLi488cQT9OvXjy1bttC8efNc2zh37hwZGRlUqFCh0I/v3nvvpWzZsnz77bf4+fnx7rvv0rlzZ/bs2UOFChU4c+YMd955J5MmTcLT05MPP/yQ7t27Ex8fT/Xq1dmwYQOPP/44H330Ee3atePEiRP89NNP+Tp3l5owYQKTJ09m6tSpuLm58dNPP9G/f3+mTZvGLbfcwm+//cbgwYMBGD9+PNnZ2dxzzz0EBgaydu1aUlJSrnsszZQpU3jppZd45pln+PzzzxkyZAgdO3akfv36edaPjo5mzZo1LF68mMDAQMaNG8fGjRvtfnYZGRm89NJL1K9fn+TkZKKjoxkwYIDtd/r5559n586dfPvtt1SqVIl9+/Zx/vz5ArV7//799O7dmxEjRvCvf/2LTZs28eSTT17XORAp0Y5utfbS/LbC+t69HLQbBu0eB09vhzbteijcOJHZs2fz4IMPAtClSxdSUlJYvXo1nTp1AmDSpEn07duXF154wbZOThDYs2cPn332GcuXLyciIgKAm266qcBtyM7O5j//+Q8+Pj40bNiQf/zjH8THx7N06VJcXFyoX78+r7zyCitXrsx3uNm7dy833XQT7u7uV623Z88e/vGPf+S5LDQ01FYnr3AzevRogoODbcdeWMf3888/s27dOpKTk/H09ATg9ddf56uvvuLzzz9n8ODBNGvWzC6QvfTSSyxatIjFixczbNgwEhISKFeuHN26dcPHx4caNWrQokWLq7YzLw888AADBw60vX/ooYcYM2YMUVFRgPXn/dJLL/H0008zfvx4vv/+e3bv3s13331HcLA14L/88svccccdBd73nXfeaQuno0eP5s0332TlypV5hpvTp0/zwQcfMH/+fDp37gzAnDlzbG24tP05brrpJqZNm0br1q05c+YM3t7eJCQk0KJFC1q1agVAzZo1C9zud999l/r16/Paa68BUL9+fbZv386kSZMKvC2REunEfut8NTmPTHBxg1YPwa1PgXeAY9v2NyjcXIu7l7UHxVH7zqf4+HjWrVvHokWLAHBzc6NPnz7Mnj3bFm42b97Mww8/nOf6mzdvxtXVlY4dO/6tJtesWdNuvEVgYCCurq52E5gFBgaSnJyc720aY4qkbo7JkyezYMECVq1adc2ZYwt6fFu2bOHMmTNUrFjRbjvnz5/nt99+A+DMmTNMmDCBb775hqNHj5KZmcn58+dJSEgA4P/+7/+oUaMGN910E126dKFLly7cfffdBZ5BO+dLPseWLVtYs2aN3Rd1VlYWFy5c4Ny5c+zatYuQkBC7UBEeHl6gfeZo2rSp7e8Wi4WgoKAr/g78/vvvZGRk0KZNG1uZn59friAUFxfHhAkT2LJlCydPniT7r6cQJyQk0LBhQ4YMGUKvXr3YuHEjt99+Oz179qRdu3YF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52dWrVpljh49anudO3fOVufRRx811atXNz/88IPZsGGDCQ8PN+Hh4Q5stWOMGTPGrF692uzfv99s3brVjBkzxlgsFvO///3PGKPzdC2X3i1ljM7XpUaNGmVWrVpl9u/fb9asWWMiIiJMpUqVTHJysjFG5+pS69atM25ubmbSpElm7969Zt68ecbLy8t8/PHHtjqO+oxXuClE//73v0316tWNh4eHadOmjfn1118d3SSHW7lypQFyvaKioowx1lsFn3/+eRMYGGg8PT1N586dTXx8vGMb7SB5nSfAzJkzx1bn/Pnz5rHHHjPly5c3Xl5e5u677zZHjx51XKMd5KGHHjI1atQwHh4epnLlyqZz5862YGOMztO1XB5udL4u6tOnj6lSpYrx8PAwVatWNX369DH79u2zLde5svf111+bxo0bG09PT9OgQQMza9Ysu+WO+oy3GGNM0fYNiYiIiBQfjbkRERERp6JwIyIiIk5F4UZEREScisKNiIiIOBWFGxEREXEqCjciIiLiVBRuRERExKko3IiIiIhTUbgRkUK3atUqLBZLrgcMiogUB4UbEfnbOnXqxMiRI23v27Vrx9GjR/Hz83NYmxSwRG5cbo5ugIg4Hw8PD4KCghzdDBG5QannRkT+lgEDBrB69WreeustLBYLFouFuXPn2vWazJ07F39/f5YsWUL9+vXx8vKid+/enDt3jg8++ICaNWtSvnx5Hn/8cbKysmzbTktL48knn6Rq1aqUK1eOsLAwVq1aZVt+8OBBunfvTvny5SlXrhyNGjVi6dKlHDhwgH/84x8AlC9fHovFwoABAwBYtmwZHTp0wN/fn4oVK9KtWzd+++032zYPHDiAxWLhs88+45ZbbqFs2bK0bt2aPXv2sH79elq1aoW3tzd33HEHx44dszsPPXv25IUXXqBy5cr4+vry6KOPkp6eXnQnX0TypJ4bEflb3nrrLfbs2UPjxo158cUXAdixY0eueufOnWPatGksWLCA06dPc88993D33Xfj7+/P0qVL+f333+nVqxft27enT58+AAwbNoydO3eyYMECgoODWbRoEV26dGHbtm3UrVuXoUOHkp6ezo8//ki5cuXYuXMn3t7ehISE8MUXX9CrVy/i4+Px9fWlbNmyAJw9e5bo6GiaNm3KmTNnGDduHHfffTebN2/GxeXi//fGjx/P1KlTqV69Og899BAPPPAAPj4+vPXWW3h5eXHfffcxbtw4ZsyYYVtnxYoVlClThlWrVnHgwAEGDhxIxYoVmTRpUlH+CETkckX+3HERcXodO3Y0I0aMsL1fuXKlAczJkyeNMcbMmTPHAGbfvn22Oo888ojx8vIyp0+ftpVFRkaaRx55xBhjzMGDB42rq6s5fPiw3b46d+5sxo4da4wxpkmTJmbChAl5tunyNlzJsWPHDGC2bdtmjDFm//79BjDvv/++rc4nn3xiALNixQpbWUxMjKlfv77tfVRUlKlQoYI5e/asrWzGjBnG29vbZGVlXbUNIlK4dFlKRIqFl5cXtWvXtr0PDAykZs2aeHt725UlJycDsG3bNrKysqhXrx7e3t621+rVq22XkR5//HEmTpxI+/btGT9+PFu3br1mO/bu3cv999/PTTfdhK+vLzVr1gQgISHBrl7Tpk3t2gXQpEmTPNuao1mzZnh5edneh4eHc+bMGQ4dOnTNdolI4dFlKREpFu7u7nbvLRZLnmXZ2dkAnDlzBldXV+Li4nB1dbWrlxOI/vWvfxEZGck333zD//73P2JiYpgyZQrDhw+/Yju6d+9OjRo1eO+99wgODiY7O5vGjRvnGhtzadssFkueZTltFZGSRT03IvK3eXh42A0ELgwtWrQgKyuL5ORk6tSpY/e69E6skJAQHn30Ub788ktGjRrFe++9Z2sTYNeuP//8k/j4eJ577jk6d+5MaGgoJ0+eLLQ2b9myhfPnz9ve//rrr7YxQCJSfBRuRORvq1mzJmvXruXAgQMcP368UHo06tWrR79+/ejfvz9ffvkl+/fvZ926dcTExPDNN98AMHLkSL777jv279/Pxo0bWblyJaGhoQDUqFEDi8XCkiVLOHbsGGfOnKF8+fJUrFiRWbNmsW/fPn744Qeio6P/dltzpKenM2jQIHbu3MnSpUsZP348w4YNsxuoLCJFT//iRORve/LJJ3F1daVhw4ZUrlw51/iV6zVnzhz69+/PqFGjqF+/Pj179mT9+vVUr14dsPbKDB06lNDQULp06UK9evWYPn06AFWrVuWFF15gzJgxBAYG2kLGggULiIuLo3HjxjzxxBO89tprhdJWgM6dO1O3bl1uvfVW+vTpw1133cWECRMKbfsikj8WY4xxdCNEREq7AQMGcOrUKb766itHN0XkhqeeGxEREXEqCjciIiLiVHRZSkRERJyKem5ERETEqSjciIiIiFNRuBERERGnonAjIiIiTkXhRkRERJyKwo2IiIg4FYUbERERcSoKNyIiIuJU/h/ZadXUMEn10gAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fedbatch_df.plot(x='timestamp', y=['c_CO2', 'm_CO2_gas'], subplots=True, layout=(2,1), label=['Aqueous concentration CO2 [g/L]', 'Accum. CO2 measured in gas [g]'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the upper panel, we verify that $CO_2$ does not accumulated in the medium. In the lower panel we see how the production rate of CO2 (g/h) decrease the bioreactor is sampled. This is because the total amount of biomass decrease after sampling, thus there is less biomass to produce CO2. \n", "\n", "We assume that all $CO_2$ that exists the bioreactor is product of metabolism, i.e. no $CO_2$ is added through the liquid or gas feed. Therefore, we can directly calculate the hypothetical concentration from the off-gas measurements." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "fedbatch_df['hypothetical_c_CO2'] = hypothetical_concentration(\n", " metabolised_amount=fedbatch_df['m_CO2_gas'].to_numpy(),\n", " reactor_volume=fedbatch_df['v_Volume'].to_numpy(),\n", " sample_volume=fedbatch_df['sample_volume'].to_numpy()\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we can transform the hypothetical CO2 concentration and the biomass concentration measurements." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "fedbatch_df[['pseudo_Biomass', 'pseudo_CO2']] = pseudobatch_transform_pandas(\n", " df=fedbatch_df,\n", " measured_concentration_colnames=[\"c_Biomass\", \"hypothetical_c_CO2\"],\n", " reactor_volume_colname='v_Volume',\n", " accumulated_feed_colname='v_Feed_accum',\n", " concentration_in_feed=[0,0],\n", " sample_volume_colname='sample_volume'\n", ")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we estimate the CO2 yield using the pseudobatch transformed data we obtain the exact value used for the simulation." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Yxco2_hat = 0.045193332445214125\n", "true Yxco2 = 0.0451933324452141\n" ] } ], "source": [ "Yxco2_hat, intercept = np.polyfit(fedbatch_df['pseudo_Biomass'], fedbatch_df['pseudo_CO2'], 1)\n", "print(f\"Yxco2_hat = {Yxco2_hat}\")\n", "print(f\"true Yxco2 = {fedbatch_df['Yxco2'].iloc[-1]}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Consumed gaseous species, Oxygen\n", "The amount of metabolised $O_2$ has to be calculated from the mass balance. When the oxygen enters the bioreactor some will go straight through and into the off-gas analyzer, and some will be solubilized in the aqueous phase. From the aqueous phase the $O_2$ can either be metabolised or removed through sampling (or evaporate again). Thus, we need to solve the mass balance to find the amount of metabolised $O_2$.\n", "\n", "$$\n", "\\int_0^t Metabolism=M_{species}(t)-\\int_0^t In_{gas}-\\int_0^t In_{liquid}+\\int_0^t Out_{gas}+\\int_0^t Sampled\n", "$$\n", "\n", "Some of these terms are obtained from measurements and some can be estimated, e.g. the oxygen content in the liquid feed medium is rarely measured, but is likely insignificant. In this example, we will assume that $\\int_0^t In_{liquid}=0$ for all $t$.\n", "\n", "You can calculate the metabolized amount of $O_2$ on your own, but it does require special care to use the correct volume and mass' regarding before or after sampling. To ease the processes we have made a function which calculates the metabolized amount for you, `metabolised_amount()`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At the sampling time points this dataset contains the values just before the sample was taken. However, the `metabolised_amount()` function requires the values from just after the sample withdrawal. In the following we calculate the $O_2$ mass after sample withdrawal." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "fedbatch_df['m_O2_after_sample'] = fedbatch_df['m_O2'] - fedbatch_df['c_O2'] * fedbatch_df['sample_volume']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, we will use the `metabolised_amount()` function to calculate the mass of consumed $O_2$." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "fedbatch_df['m_O2_consumed'] = metabolised_amount(\n", " off_gas_amount=fedbatch_df['m_O2_gas'].to_numpy(),\n", " dissolved_amount_after_sampling=fedbatch_df['m_O2_after_sample'].to_numpy(),\n", " inlet_gas_amount=fedbatch_df['m_O2_in'].to_numpy(),\n", " sampled_amount=(fedbatch_df['c_O2'] * fedbatch_df['sample_volume']).cumsum().to_numpy(),\n", " inlet_liquid_amount=np.zeros_like(fedbatch_df['m_O2_in'].to_numpy()),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, that we have calculated the metabolised amount of $O_2$ we can calculate the hypothetical concentration and run the pseudo batch transformation on the hypothetical concentration data." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "fedbatch_df['hypothetical_c_O2'] = hypothetical_concentration(\n", " metabolised_amount=fedbatch_df['m_O2_consumed'].to_numpy(),\n", " reactor_volume=fedbatch_df['v_Volume'].to_numpy(),\n", " sample_volume=fedbatch_df['sample_volume'].to_numpy(),\n", ")\n", "\n", "fedbatch_df['pseudo_O2'] = pseudobatch_transform_pandas(\n", " df=fedbatch_df,\n", " measured_concentration_colnames=['hypothetical_c_O2'],\n", " reactor_volume_colname='v_Volume',\n", " accumulated_feed_colname='v_Feed_accum',\n", " concentration_in_feed=[0],\n", " sample_volume_colname='sample_volume',\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are now ready to estimate the oxygen yield coefficient using a linear model." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Yxo2_hat = -0.010000000000000162\n", "true Yxo2 = 0.01\n" ] } ], "source": [ "Yxo2_hat, intercept = np.polyfit(fedbatch_df['pseudo_Biomass'], fedbatch_df['pseudo_O2'], 1)\n", "print(f\"Yxo2_hat = {Yxo2_hat}\")\n", "print(f\"true Yxo2 = {fedbatch_df['Yxo2'].iloc[-1]}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that the estimated oxygen yield coefficient match the one used for simulating the data show the the method works." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Volatile product\n", "Finally, we simulated a generic volatile product which is produced in the liquid and then evaporates through first order kinetics. We will assume that we have measurements both of the evaporating amount and the liquid concentration of the product. For the mass balance we will assume that both $\\int_0^t In_{gas}=0$ and $\\int_0^t In_{liquid}=0$.\n", "\n", "Let's first inspect the raw simulated data." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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X18SExPx8fHJy9MgIiKSN07uhRnd4GwsBDWEAYuhVIDZVZkqt7/fed6T065dO1auXMnevXsB+Pvvv/nzzz/p0qULAFFRUcTExNCpUyf7e3x9fWnTpg3r168HYP369fj5+dkDDkCnTp1wcnJi48aN9ja33nqrPeAAhIWFERkZyZkzZy5bW3p6OklJSQ4PERGRQuvUPgWcm+CS1x84cuRIkpKSqFu3Ls7OzmRnZ/PWW2/Rv39/AGJiYgAICgpyeF9QUJB9X0xMDIGBgY6FurhQpkwZhzbVqlW75DNy9vn7+19S2/jx43n99dfz4ChFRETyWexu+PYBBZybkOc9OfPnz2fWrFnMnj2brVu3MmPGDN577z1mzJiR11913UaNGkViYqL9ceTIEbNLEhERudSxrTD9nvMBp5ECzg3K856cF198kZEjR9KnTx8AGjVqxOHDhxk/fjwDBw4kODgYgNjYWMqXL29/X2xsLE2bNgUgODiYuLg4h8/NysoiPj7e/v7g4GBiY2Md2uQ8z2nzb+7u7ri7u9/8QYqIiOSXw3/BrIdsE/1VaAkPfweel16dkGvL856c1NRUnP61boazszNWqxWAatWqERwczMqVK+37k5KS2LhxI6GhoQCEhoaSkJBAeHi4vc2qVauwWq20adPG3mbt2rVkZmba26xYsYI6depc9lKViIhIobd/JXzb48JMxgN+UMC5CXkecu69917eeustfvrpJw4dOsSiRYv44IMP6N69OwAWi4Xhw4fz5ptvsnjxYiIiIhgwYAAhISE88MADANSrV4+7776bQYMGsWnTJtatW8fQoUPp06cPISEhAPTr1w83NzeeeOIJdu3axbx585g0aRIjRozI60MSERHJf3uWwpw+trWoat4F/Rdoor+bZeSxpKQk49lnnzUqV65seHh4GNWrVzdeeeUVIz093d7GarUao0ePNoKCggx3d3ejY8eORmRkpMPnnD592ujbt6/h7e1t+Pj4GI899piRnJzs0Obvv/82OnToYLi7uxsVKlQwJkyYcF21JiYmGoCRmJh44wcsIiJys3YsMIzX/A1jrI9hzH3YMDLTr/2eEiy3v995Pk9OUaJ5ckRExHRHw+F/ncGaBU36wX0fg3OeD5ktVnL7+62zKCIiYpa0RPj+cVvAqX8/3P8pOGlZybyiMykiImIGw4Clz8GZQ+BbGe6d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G1WqVDHc3NyMcuXKGR07drQHHMPQebqWf4ccnS+b3r17G+XLlzfc3NyMChUqGL179zb2799v36/z5GjJkiVGw4YNDXd3d6Nu3brGF1984bDfzL/fLYZhGPnfXyQiIiJSsDQmR0RERIolhRwREREplhRyREREpFhSyBEREZFiSSFHREREiiWFHBERESmWFHJERESkWFLIEZF8sXr1aiwWyyVr/IiIFBSFHBHJE7fffjvDhw+3P2/Xrh0nTpzA19fXtJoUtERKNhezCxCR4snNza1ErsosIoWHenJE5KY9+uijrFmzhkmTJmGxWLBYLEyfPt2hF2X69On4+fmxdOlS6tSpg5eXFw8++CCpqanMmDGDqlWr4u/vzzPPPEN2drb9s9PT03nhhReoUKECpUqVok2bNqxevdq+//Dhw9x77734+/tTqlQpGjRowLJlyzh06BB33HEHAP7+/lgsFh599FEAli9fTocOHfDz8yMgIIBu3bpx4MAB+2ceOnQIi8XC/PnzueWWW/D09KRVq1bs3buXzZs307JlS7y9venSpQsnT550OA8PPPAAr7/+OuXKlcPHx4fBgweTkZGRfydfRK5IPTkictMmTZrE3r17adiwIePGjQNg165dl7RLTU1l8uTJzJ07l+TkZHr06EH37t3x8/Nj2bJlHDx4kJ49e9K+fXt69+4NwNChQ9m9ezdz584lJCSERYsWcffddxMREUGtWrUYMmQIGRkZrF27llKlSrF79268vb2pVKkS33//PT179iQyMhIfHx88PT0BSElJYcSIETRu3JizZ88yZswYunfvzvbt23FyuvD/fmPHjuWjjz6icuXKPP744/Tr14/SpUszadIkvLy8eOihhxgzZgxTpkyxv2flypV4eHiwevVqDh06xGOPPUZAQABvvfVWfv4rEJHLKZBlQEWk2Pv3itY5K8+fOXPGMAzD+Prrrw3AYTXn//znP4aXl5eRnJxsfy0sLMz4z3/+YxiGYRw+fNhwdnY2jh075vBdHTt2NEaNGmUYhmE0atTIeO211y5b079ruJKTJ08agBEREWEYhmFERUUZgPHll1/a28yZM8cAjJUrV9pfGz9+vFGnTh3784EDBxplypQxUlJS7K9NmTLF8Pb2NrKzs69ag4jkPV2uEpEC4+XlRY0aNezPg4KCqFq1Kt7e3g6vxcXFARAREUF2dja1a9fG29vb/lizZo398tIzzzzDm2++Sfv27Rk7diw7duy4Zh379u2jb9++VK9eHR8fH6pWrQpAdHS0Q7vGjRs71AXQqFGjy9aao0mTJnh5edmfh4aGcvbsWY4cOXLNukQkb+lylYgUGFdXV4fnFovlsq9ZrVYAzp49i7OzM+Hh4Tg7Ozu0ywlGTz75JGFhYfz000/8+uuvjB8/nvfff59hw4ZdsY57772XKlWqMG3aNEJCQrBarTRs2PCSsTMX12axWC77Wk6tIlL4qCdHRPKEm5ubw4DhvNCsWTOys7OJi4ujZs2aDo+L79yqVKkSgwcPZuHChTz//PNMmzbNXhPgUNfp06eJjIzk1VdfpWPHjtSrV48zZ87kWc1///03586dsz/fsGGDfYyQiBQshRwRyRNVq1Zl48aNHDp0iFOnTuVJD0ft2rXp378/AwYMYOHChURFRbFp0ybGjx/PTz/9BMDw4cP55ZdfiIqKYuvWrfz+++/Uq1cPgCpVqmCxWFi6dCknT57k7Nmz+Pv7ExAQwBdffMH+/ftZtWoVI0aMuOlac2RkZPDEE0+we/duli1bxtixYxk6dKjDgGYRKRj6r05E8sQLL7yAs7Mz9evXp1y5cpeMb7lRX3/9NQMGDOD555+nTp06PPDAA2zevJnKlSsDtl6aIUOGUK9ePe6++25q167NZ599BkCFChV4/fXXGTlyJEFBQfawMXfuXMLDw2nYsCHPPfcc7777bp7UCtCxY0dq1arFrbfeSu/evbnvvvt47bXX8uzzRST3LIZhGGYXISJSHDz66KMkJCTwww8/mF2KiKCeHBERESmmFHJERESkWNLlKhERESmW1JMjIiIixZJCjoiIiBRLCjkiIiJSLCnkiIiISLGkkCMiIiLFkkKOiIiIFEsKOSIiIlIsKeSIiIhIsaSQIyIiIsXS/wOkOiUUSPl9uAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fedbatch_df.plot(\n", " x='timestamp',\n", " y=['m_Product', 'm_product_gas']\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some of the dissolved product (m_Product) is removed when the bioreactor is sampled, while the product that has evaporated is not removed through sampling. We need to calculate the total production of the product, i.e. combining the two curves above. We can use the `metabolised_amount()` to calculated the total production." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# again first we need to calculate the mass of product after sampling\n", "# to obey the requirements of the metabolised_amount function\n", "fedbatch_df['m_Product_after_sample'] = fedbatch_df['m_Product'].to_numpy() - (fedbatch_df['c_Product'] * fedbatch_df['sample_volume']).to_numpy()\n", "\n", "fedbatch_df['m_Product_produced'] = metabolised_amount(\n", " off_gas_amount=fedbatch_df['m_product_gas'].to_numpy(),\n", " dissolved_amount_after_sampling=fedbatch_df['m_Product_after_sample'].to_numpy(),\n", " inlet_gas_amount=np.zeros_like(fedbatch_df['m_Product']),\n", " sampled_amount=(fedbatch_df['c_Product'] * fedbatch_df['sample_volume']).cumsum().to_numpy(),\n", ")\n", "fedbatch_df['hypothetical_c_Product'] = hypothetical_concentration(\n", " metabolised_amount=fedbatch_df['m_Product_produced'].to_numpy(),\n", " reactor_volume=fedbatch_df['v_Volume'].to_numpy(),\n", " sample_volume=fedbatch_df['sample_volume'].to_numpy()\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have the hypothetical concentration we can perform pseudobatch transformation on the data." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "fedbatch_df['pseudo_Product'] = pseudobatch_transform_pandas(\n", " df=fedbatch_df,\n", " measured_concentration_colnames='hypothetical_c_Product',\n", " reactor_volume_colname='v_Volume',\n", " accumulated_feed_colname='v_Feed_accum',\n", " concentration_in_feed=[0],\n", " sample_volume_colname='sample_volume'\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can estimate the product yield coefficient using a linear model." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Yxp_hat = 0.8215102466751055\n", "true Yxp = 0.8215102466751038\n" ] } ], "source": [ "Yxp_hat, intercept = np.polyfit(fedbatch_df['pseudo_Biomass'], fedbatch_df['pseudo_Product'], 1)\n", "print(f\"Yxp_hat = {Yxp_hat}\")\n", "print(f\"true Yxp = {fedbatch_df['Yxp'].iloc[-1]}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, we show that the estimated yield coefficient matches the coefficient that was used for the simulation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Through out this tutorial we have shown that pseudobatch transformation is capable of handling measurements of gaseous compounds. And how to use the two helper functions `hypethetical_concentration` and `metabolised_amount` to prepare the measurements for pseudo batch transformation." ] } ], "metadata": { "kernelspec": { "display_name": "pseudobatch-dev", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.8" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }